Package de.yaams.extensions.rgssproject.database.form

Source Code of de.yaams.extensions.rgssproject.database.form.EnemyActionPanel

/**
*
*/
package de.yaams.extensions.rgssproject.database.form;

import java.awt.GridLayout;
import java.util.ArrayList;

import javax.swing.JPanel;

import org.jruby.RubyArray;
import org.jruby.RubyObject;
import org.jruby.runtime.builtin.IRubyObject;

import de.yaams.extensions.rgssproject.RGSSProjectHelper;
import de.yaams.extensions.rgssproject.database.RGSS1Helper;
import de.yaams.extensions.rgssproject.database.RGSS1Helper.Type;
import de.yaams.extensions.rgssproject.database.SystemGObject;
import de.yaams.extensions.rgssproject.map.form.FormSwitchVarSelector;
import de.yaams.maker.helper.gui.YFactory;
import de.yaams.maker.helper.gui.form.FormComboBox;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.FormHelper;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.helpcenter.HelpViewer;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.project.Project;

/**
* @author abt
*
*/
public class EnemyActionPanel extends JPanel {

  private static final long serialVersionUID = -7038427336325635360L;

  protected ArrayList<SystemGObject> elements;
  protected EnemyActionList list;
  protected JPanel gContent;
  protected RubyObject actions;
  protected Project project;

  /**
   * Create a new GTab
   *
   * @param project
   */
  public EnemyActionPanel(Project project, IRubyObject actions) {
    super(new GridLayout(1, 1));
    this.project = project;

    RubyArray ra = (RubyArray) actions;

    // convert code
    elements = new ArrayList<SystemGObject>();
    for (Object o : ra) {
      elements.add(new SystemGObject((RubyObject) o));
    }

    // build gui
    buildGui();
  }

  /**
   * Build the gui
   */
  protected void buildGui() {
    list = new EnemyActionList(this);
    gContent = new JPanel(new GridLayout(1, 1));

    add(YFactory.createHorizontPanel(list, gContent, "enemy.action"));

    buildEmptyView();
  }

  /**
   * Remove all and show the help
   */
  protected void buildEmptyView() {

    // build panel
    gContent.removeAll();

    // add helpfile
    gContent.add(new HelpViewer("enemy.action"));

    // build it
    gContent.invalidate();
    gContent.revalidate();
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.packandgo.programm.tabs.YaTab#getContent()
   */
  public void buildInternContent(final int id) {

    // if (id > 0) {
    // build panel
    gContent.removeAll();

    // build it
    FormBuilder form = new FormBuilder("enemy.action");
    buildForm(form, id);

    // add modi
    form.addChangeListener(new FormElementChangeListener() {

      @Override
      public void stateChanged(FormElement form) {
        // set modifizied
        elements.get(id).setModified(true);

      }
    });

    // build it
    gContent.add(form.getPanel(true));
    gContent.invalidate();
    gContent.revalidate();
    // } else {
    // buildEmptyView();
    // }
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.packandgo.programm.tabs.YaTab#getContent()
   */
  public void buildForm(FormBuilder form, int id) {
    // get page
    RubyObject action = elements.get(id).getObject();

    // build
    FormComboBox f = RubyForm.getComboBoxNum(I18N.t("Typ"), new String[] { "0", "1" },
        new String[] { "Basic", RGSS1Helper.getName(Type.SKILL) }, action, "@kind");
    form.addElement("basic.kind", f.setSorting(-1));
    form.addElement(
        "basic.basic",
        FormHelper.setEnabeldWhenRightElementSelect(
            f,
            RubyForm.getComboBoxNum(I18N.t("Typ"), new String[] { "0", "1", "2", "3" }, new String[] { "Attack", "Defend",
                "Escape", "Do nothing" }, action, "@basic"), "0"));
    form.addElement("basic.skill", FormHelper.setEnabeldWhenRightElementSelect(f, new FormDBComboBox(RGSS1Helper.getName(Type.SKILL),
        project, Type.SKILL, action, "@skill_id", false), "1"));

    form.addElement("basic.rating", RubyForm.getNumber(I18N.t("Wahrscheinlichkeit"), action, "@rating").setMinMax(0, 10, 1));

    form.addHeader("cond", new FormHeader(I18N.t("Bedingung"), "if").setCollapsed(true).setColumn(4));

    // add turn
    form.addElement("cond.turn_turn_a", RubyForm.getNumber("Jede Runde:", action, "@condition_turn_a"));
    form.addElement("cond.turn_turn_b", RubyForm.getNumber("+ X*", action, "@condition_turn_b"));

    form.addElement("cond.condition_hp", RubyForm.getNumber(I18N.t("HP ist unter %"), action, "@condition_hp").setMinMax(0, 100, 1));

    form.addElement("cond.condition_level",
        RubyForm.getNumber(I18N.t("Durchschnittliches Partylevel ist unter"), action, "@condition_level").setMinMax(0, 100, 1));

    form.addElement("cond.condition_switch_id", new FormSwitchVarSelector(project, I18N.t("Switch is on"), action,
        "@condition_switch_id", Type.SWITCH));

  }

  /**
   * @return the elements
   */
  public ArrayList<SystemGObject> getElements() {
    return elements;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#getIcon(java.lang.Object)
   */
  public Object getIcon(final Integer o) {
    return "enemy_edit";
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#isModified(java.lang.Object
   * )
   */
  public boolean isModified(final Integer o) {
    return elements.get(o).isModified();
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#getText(java.lang.Object )
   */
  public Object getText(final Integer value) {
    return I18N.t("Aktion {0}", value + 1);
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#getDesc(java.lang.Object)
   */
  public String getDesc(final Integer o) {
    return null;
  }

  /**
   * Create a new object, for this type
   *
   * @return
   */
  public RubyObject createObject() {
    return (RubyObject) RGSSProjectHelper.getInterpreter(project).runScriptlet("return RPG::Enemy::Action.new");
  }

  /**
   * Delete the selected element
   *
   * @param id
   */
  public void delObject(int id) {

    // last element?
    if (elements.size() - 1 == id) {
      // remove it
      elements.remove(id);
    } else {
      // reset only element
      elements.get(id).setObject(createObject());
      elements.get(id).setModified(true);
    }

    // inform tab
    buildEmptyView();
  }
}
TOP

Related Classes of de.yaams.extensions.rgssproject.database.form.EnemyActionPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.